<?xml version="1.0" encoding="UTF-8" ?>
<class name="EditorImportPlugin" inherits="Reference" category="Core" version="3.0.alpha.custom_build">
	<brief_description>
		Registers a custom resource importer in the editor. Use the class to parse any file and import it as a new resource type.
	</brief_description>
	<description>
		EditorImportPlugins provide a way to extend the editor's resource import functionality. Use them to import resources from custom files or to provide alternatives to the editor's existing importers. Register your [EditorPlugin] with [method EditorPlugin.add_import_plugin].

		EditorImportPlugins work by associating with specific file extensions and a resource type. See [method get_recognized_extension] and [method get_resource_type]). They may optionally specify some import presets that affect the import process. EditorImportPlugins are responsible for creating the resources and saving them in the [code].import[/code] directory.


		Below is an example EditorImportPlugin that imports a [Mesh] from a file with the extension ".special" or ".spec":
		[codeblock]
		tool
		extends EditorImportPlugin

		func get_importer_name():
		    return "my.special.plugin"

		func get_visible_name():
		    return "Special Mesh Importer"

		func get_recognized_extensions():
		    return ["special", "spec"]

		func get_save_extension():
		    return "mesh"

		func get_resource_type():
		    return "Mesh"

		func get_preset_count():
		    return 1

		func get_preset_name(i):
		    return "Default"

		func get_import_options(i):
		    return [{"name": "my_option", "default_value": false}]

		func load(src, dst, opts, r_platform_variants, r_gen_files):
		    var file = File.new()
		    if file.open(src, File.READ) != OK:
		        return FAILED

		    var mesh = Mesh.new()

		    var save = dst + "." + get_save_extension()
		    ResourceSaver.save(file, mesh)
		    return OK
		[/codeblock]
	</description>
	<tutorials>
	</tutorials>
	<demos>
	</demos>
	<methods>
		<method name="get_import_options" qualifiers="virtual">
			<return type="Array">
			</return>
			<argument index="0" name="preset" type="int">
			</argument>
			<description>
				Get the options and default values for the preset at this index. Returns an Array of Dictionaries with the following keys: "name", "default_value", "property_hint" (optional), "hint_string" (optional), "usage" (optional).
			</description>
		</method>
		<method name="get_importer_name" qualifiers="virtual">
			<return type="String">
			</return>
			<description>
				Get the unique name of the importer.
			</description>
		</method>
		<method name="get_option_visibility" qualifiers="virtual">
			<return type="bool">
			</return>
			<argument index="0" name="option" type="String">
			</argument>
			<argument index="1" name="options" type="Dictionary">
			</argument>
			<description>
			</description>
		</method>
		<method name="get_preset_count" qualifiers="virtual">
			<return type="int">
			</return>
			<description>
				Get the number of initial presets defined by the plugin. Use [method get_import_options] to get the default options for the preset and [method get_preset_name] to get the name of the preset.
			</description>
		</method>
		<method name="get_preset_name" qualifiers="virtual">
			<return type="String">
			</return>
			<argument index="0" name="preset" type="int">
			</argument>
			<description>
				Get the name of the options preset at this index.
			</description>
		</method>
		<method name="get_recognized_extensions" qualifiers="virtual">
			<return type="Array">
			</return>
			<description>
				Get the list of file extensions to associate with this loader (case insensitive). e.g. ["obj"].
			</description>
		</method>
		<method name="get_resource_type" qualifiers="virtual">
			<return type="String">
			</return>
			<description>
				Get the godot resource type associated with this loader. e.g. "Mesh" or "Animation".
			</description>
		</method>
		<method name="get_save_extension" qualifiers="virtual">
			<return type="String">
			</return>
			<description>
				Get the extension used to save this resource in the [code].import[/code] directory.
			</description>
		</method>
		<method name="get_visible_name" qualifiers="virtual">
			<return type="String">
			</return>
			<description>
				Get the name to display in the import window.
			</description>
		</method>
		<method name="import" qualifiers="virtual">
			<return type="int">
			</return>
			<argument index="0" name="source_file" type="String">
			</argument>
			<argument index="1" name="save_path" type="String">
			</argument>
			<argument index="2" name="options" type="Dictionary">
			</argument>
			<argument index="3" name="r_platform_variants" type="Array">
			</argument>
			<argument index="4" name="r_gen_files" type="Array">
			</argument>
			<description>
			</description>
		</method>
	</methods>
	<constants>
	</constants>
</class>
